Imports System.Data
Imports System.Data.SqlClient
Imports System
Imports System.Configuration
Public Class DInasistencia

    Dim ocnn As New DConexion

    Public Function cargarInasistencia(ByVal alumno As Entidades.EAlumno, ByVal lista As List(Of Entidades.EInasistencia)) As Boolean
        Dim oCmd As New SqlCommand
        Dim band As Boolean = False
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            For Each inasistencia As Entidades.EInasistencia In lista
                oCmd.CommandType = CommandType.StoredProcedure
                oCmd.CommandText = "CargarInasistenciasxAlumno"
                'agrega comandos
                oCmd.Parameters.AddWithValue("@Legajo", alumno.Num_Legajo)
                oCmd.Parameters.AddWithValue("@Fecha", inasistencia.fecha)
                oCmd.Parameters.AddWithValue("@Tipo", inasistencia.tipo)
                oCmd.Parameters.AddWithValue("@trimestre", inasistencia.trimestre)
                oCmd.Parameters.AddWithValue("@ciclo", inasistencia.ciclo)
                'ejecuta comando
                oCmd.ExecuteNonQuery()
                oCmd.Dispose()
            Next
            band = True
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        ocnn.cerrarConexion()
        Return band
    End Function

    Public Function modificarInasistencia(ByVal legajo As Integer, ByVal lista As List(Of Entidades.EInasistencia)) As Boolean
        Dim oCmd As New SqlCommand
        Dim band As Boolean = False
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            For Each inasistencia As Entidades.EInasistencia In lista
                oCmd.CommandType = CommandType.StoredProcedure
                oCmd.CommandText = "ModificarInasistencia"
                oCmd.Parameters.AddWithValue("@Legajo", legajo)
                oCmd.Parameters.AddWithValue("@Fecha", inasistencia.fecha)
                oCmd.Parameters.AddWithValue("@Tipo", inasistencia.tipo)
                oCmd.Parameters.AddWithValue("@trimestre", inasistencia.trimestre)
                oCmd.ExecuteNonQuery()
                oCmd.Dispose()
            Next
            band = True
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        ocnn.cerrarConexion()
        Return band
    End Function

    Public Function borrarInasistencia(ByVal legajo As Integer, ByVal lista As List(Of Entidades.EInasistencia)) As Boolean
        Dim oCmd As New SqlCommand
        Dim band As Boolean = False
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            For Each inasistencia As Entidades.EInasistencia In lista
                oCmd.CommandType = CommandType.StoredProcedure
                oCmd.CommandText = "BorrarInasistencia"
                oCmd.Parameters.AddWithValue("@Legajo", legajo)
                oCmd.Parameters.AddWithValue("@Fecha", inasistencia.fecha)
                oCmd.ExecuteNonQuery()
                oCmd.Dispose()
            Next
            band = True
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        ocnn.cerrarConexion()
        Return band
    End Function

    Public Function buscarInasistenciaPorAlumno(ByVal legajo As Integer) As List(Of Entidades.EInasistencia)
        Dim oCmd As New SqlCommand
        Dim oInasistencias As New List(Of Entidades.EInasistencia)
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "BuscarInasistenciasxAlumno"
            oCmd.Parameters.AddWithValue("@Legajo", legajo)
            Using oReader As SqlDataReader = oCmd.ExecuteReader
                Do While oReader.Read
                    Dim oInasistencia As New Entidades.EInasistencia
                    oInasistencia.fecha = oReader("fecha")
                    oInasistencia.tipo = oReader("tipo")
                    oInasistencia.trimestre = oReader("trimestre")
                    oInasistencias.Add(oInasistencia)
                    oInasistencia = Nothing
                Loop
                ocnn.cerrarConexion()
                Return oInasistencias
            End Using
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oInasistencias = Nothing
        End Try
    End Function

    Public Function buscarInasistenciaPorAlumno(ByVal legajo As Integer, ByVal trimestre As Integer, ByVal ciclo As Integer) As List(Of Entidades.EInasistencia)
        Dim oCmd As New SqlCommand
        Dim oInasistencias As New List(Of Entidades.EInasistencia)
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "BuscarInasistenciasxAlumno"
            oCmd.Parameters.AddWithValue("@Legajo", legajo)
            oCmd.Parameters.AddWithValue("@Trimestre", trimestre)
            oCmd.Parameters.AddWithValue("@ciclo", ciclo)
            Using oReader As SqlDataReader = oCmd.ExecuteReader
                Do While oReader.Read
                    If oReader("trimestre") = trimestre Then
                        Dim oInasistencia As New Entidades.EInasistencia
                        oInasistencia.fecha = oReader("fecha")
                        oInasistencia.tipo = oReader("tipo")
                        oInasistencia.trimestre = oReader("trimestre")
                        oInasistencias.Add(oInasistencia)
                        oInasistencia = Nothing
                    End If
                Loop
                ocnn.cerrarConexion()
                Return oInasistencias
            End Using
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oInasistencias = Nothing
        End Try
    End Function

    Public Function buscarInasistenciaPorAlumno(ByVal Alumno As Entidades.EAlumno, ByVal lista As List(Of Entidades.EInasistencia)) As Boolean
        Dim oCmd As New SqlCommand
        Dim band As Boolean
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            Dim oReader As SqlDataReader
            For Each inasistencia As Entidades.EInasistencia In lista
                oCmd.CommandType = CommandType.StoredProcedure
                oCmd.CommandText = "BuscarInasistenciaxAlumno"
                oCmd.Parameters.AddWithValue("@Legajo", Alumno.Num_Legajo)
                oCmd.Parameters.AddWithValue("@Fecha", inasistencia.fecha)
                oReader = oCmd.ExecuteReader()
                If oReader.HasRows Then
                    band = True
                    Exit For
                End If
                oReader.Close()
            Next
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        oCmd.Dispose()
        ocnn.cerrarConexion()
        Return band
    End Function

    Public Function buscarInasistenciaPorAlumno1(ByVal Alumno As Integer) As List(Of Entidades.EInasistencia)
        Dim oCmd As New SqlCommand
        Dim oInasistencias As New List(Of Entidades.EInasistencia)
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "BuscarInasistenciasxAlumno1"
            oCmd.Parameters.AddWithValue("@Legajo", Alumno)

            Dim dr As SqlDataReader
            dr = oCmd.ExecuteReader
            Do While dr.Read
                Dim oInasistencia As New Entidades.EInasistencia
                oInasistencia.fecha = dr("fecha")
                oInasistencia.tipo = dr("tipo")
                oInasistencia.trimestre = dr("trimestre")
                oInasistencias.Add(oInasistencia)
                oInasistencia = Nothing
            Loop
            ocnn.cerrarConexion()
            Return oInasistencias

        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oInasistencias = Nothing
        End Try
    End Function
    Public Function buscarInasistenciaPorAlumno1(ByVal Alumno As Integer, ByVal fecha As Date) As Entidades.EInasistencia
        Dim oCmd As New SqlCommand
        Dim oInasistencia As New Entidades.EInasistencia
        Try
            ocnn.abrirConexion()
            oCmd.Connection = ocnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "BuscarInasistenciaxAlumno"
            oCmd.Parameters.AddWithValue("@Legajo", Alumno)
            oCmd.Parameters.AddWithValue("@Fecha", fecha)
            Dim dr As SqlDataReader
            dr = oCmd.ExecuteReader
            Do While dr.Read

                oInasistencia.fecha = dr("fecha")
                oInasistencia.tipo = dr("tipo")
                oInasistencia.trimestre = dr("trimestre")


            Loop
            ocnn.cerrarConexion()
            Return oInasistencia

        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oInasistencia = Nothing
        End Try
    End Function
End Class
